Distributed life cycle development tool for controls

ABSTRACT

A control system for a device, such as an appliance, is designed by storing software representations of pre-existing control panel components ( 2005 ) and pre-existing control processes ( 2010 ) on a computer, using the computer to develop a control panel for the device by selecting and placing software representations of pre-existing control panel objects in a software representation of the control panel ( 2015 ), and using the computer to develop control software for the device by selecting software representations of pre-existing control processes and associating the selected control processes with the selected control panel objects ( 2020 ). The control software then is downloaded from the computer to control hardware to be included in the device ( 2025 ). Finally, the device is tested using the control software running on the control hardware and under the control of the computer ( 2030 ). A system ( 2100 ) for designing a control system for a device ( 2105 ) includes a computer ( 2110 ) having an input unit ( 2115 ), an output unit ( 2120 ), a processor ( 2125 ), a storage device ( 2130 ) on which the software representations ( 2140 ) are stored, and a display ( 2135 ) on which a representation of the control panel is presented. The system also includes control hardware ( 2145 ) connected to active components ( 2150 ) of the device ( 2105 ) and operable to receive data from the output unit ( 2120 ) of the computer ( 2110 ). The processor ( 2125 ) is programmed to generate the control system in the manner discussed above.

CROSS REFERENCE TO RELATED APPLICATIONS

This application claims priority from U.S. Provisional Application Nos.60/106,804, filed Nov. 3, 1998, and Ser. No. 60/112,964, filed Dec. 18,1998, both of which are titled “DISTRIBUTED LIFE CYCLE DEVELOPMENT TOOLFOR CONTROLS”.

TECHNICAL FIELD

The invention relates to designing controls for appliances, machines,machine tools, and other devices.

BACKGROUND

Typically, development of a new product, such as an appliance, startswith the manufacturer writing a system requirements specification. Thisspecification is sent to various engineering firms with a request forproposal. Each engineering firm provides a proposal and cost estimate tothe manufacturer. The manufacturer evaluates the proposals and selects ashort list of engineering firms. The manufacturer then asks these firmsto submit firm quotes for the new product based on their proposals.

Finally, the manufacturer reviews all firm quotes and selects oneengineering firm to produce the new product. This is a long andlaborious process that usually takes three to nine months with only onetangible result: a firm proposal for development of a new product.

The next step in the process is for the manufacturer and the selectedengineering firm to develop a detailed design specification for the newproduct. This development usually takes three to six months.

The final step in the process is to produce a prototype system based onthe detailed design specification. Once the prototype is complete, thenew system is extensively tested by the engineering firm and by themanufacturer. After all regression and acceptance testing is complete,the system is tested for certification to ensure it meets all applicablegovernment requirements for safety and operation. The new product goesinto production once testing is complete.

SUMMARY

A system for the design of control systems for appliances, machines,machine tools, and the like improves a user's ability to develop aprocessor-based control system by reducing development cycles andeliminating or reducing the need for a formal customer requirementspecification. The system is intended to reduce time to market,eliminate excess requirements cycles, lower system development costs,and improve overall product quality. Improvements in the productdevelopment cycle may be attained through the use of a computer-basedvirtual prototype tool, a state machine engine, standard embeddedcontrol code, a standard hardware platform, and real-time testing onactual appliance hardware for verification of the embedded controlsystem.

In one general aspect, a control system for a device, such as anappliance, is generated by storing software representations ofpre-existing control panel components and control processes on acomputer and using the computer to develop a control panel and controlsoftware for the device by selecting and placing softwarerepresentations of pre-existing control panel objects in a softwarerepresentation of the control panel, selecting software representationsof pre-existing control processes, and associating the selected controlprocesses with the selected control panel objects. The control softwarethen is downloaded from the computer to control hardware to be includedin the device, and the device is tested using the control softwarerunning on the control hardware and under the control of the computer.

Embodiments may include one or more of the following features. Forexample, a virtual control panel generated at the computer may embodythe control panel designed for the device. A user may manipulate thevirtual control panel to generate virtual control inputs that then aretransmitted to the control hardware to control the control hardware. Thevirtual control inputs may be transmitted using a communicationsprotocol. The inputs may be transferred, for example, over a pair ofwires, or through use of infrared or radio frequency transmissionchannels, and using any standard communications protocol.

When the control hardware includes a standard hardware control modulefor implementing the control software and having a communicationsinterface, the standard hardware control module may be connected to thecomputer through the communications interface and to active componentsof the device prior to transmission. After the device is tested, copiesof the standard hardware control module may be included in productionversions of the device. The standard hardware control module may beselected from a set of predefined standard hardware control modules.Each standard hardware control module may be capable of running standardsoftware and may have different performance characteristics, andselection of a standard hardware control module may be based onperformance characteristics required by the control panel and thecontrol software. Selection may be done automatically by the computer.

Software representations of active device components also may be storedon the computer. In this case, using the computer to develop the controlpanel and the control software for the device may include selecting oneor more representations of active device components and associating theselected active device components with one or more selected controlprocesses or selected control panel objects.

A standard control process may include, for example, a list ofsequential control steps, a state machine, or a set of interrupts.

Using the computer to develop a control panel and control software forthe device may include using graphical techniques to display thesoftware representation of the control panel and to select and placesoftware representations of the control panel components on thedisplayed software representation of the control panel. The softwarerepresentations of control panel components may be displayed as icons,and a selected icon may be displayed as a three-dimensionalrepresentation of a corresponding control panel component.

The graphical techniques may involve use of a graphical drawing tool.The graphical drawing tool also may display icons representing thepre-existing control processes.

A computer-controlled modelling system may be used to generate athree-dimensional model of the control panel.

The control hardware may include standard control software. Downloadingthe control software from the computer to the control hardware mayinclude adding one or more modules to the standard control software, orreplacing one or more modules of that software.

The control software may be generated without generating a controlpanel. Such an approach may find use, for example, when it is desired toadd functionality to a device or modify operation of the device withoutmodifying the control panel of the device.

The control software also may be generated prior to generating a controlpanel. In this case, the computer may automatically generate a list ofcontrol panel components needed for a control panel of the device basedon requirements of the control software.

The control panel also may be generated without also generating newcontrol software. This may be useful, for example, when it is desired toprovide a new control panel design without modifying the underlyingfunctionality of a device.

In another general aspect, a design specification for a control panelfor a device is generated. First, a computer is used to graphicallygenerate a control panel for a device. Thereafter, the computer is usedto automatically generate the design specification from the controlpanel. Using the computer to graphically generate the control panel forthe device may include using one or more standard objects. A standardobject may include a graphical representation of a physical embodimentof the object and a logical representation of operation of the object.Embodiments may include one or more of the features noted above.

In another general aspect a control system for a device may be designedby providing a collection of standard hardware control modules, each ofwhich is capable of running standard software and has differentperformance characteristics. A computer may be used to develop a controlpanel and control software for the device, and one or more of thestandard hardware control modules to be included in the device may beselected based on performance characteristics required by the controlpanel and control software. Thus, the hardware to be included isselected after the control software is generated so that optimalhardware for the software may be provided. Embodiments may include oneor more of the features noted above.

The systems and techniques may be used to develop appliance controlsystems and will be described using that product as a reference.Appliances may include, for example, blenders, coffee makers, clockradios, clothes dryers, dish washers, food processors, microwave ovens,mixers, ovens, ranges, refrigerators, stereo equipment, televisions,video cassette or digital video disc recorders, and washing machines. Italso should be understood that this invention can be used fordevelopment of any type of microprocessor-based control system.

The known product development process in the prior art takes from six toeighteen months and averages about twelve months. The intention of thisinvention is to reduce the new product development cycle from itscurrent average of twelve months to less than six months. This will beaccomplished by eliminating the need for a system requirementsspecification and a detailed design specification, or at leastsimplifying the creation of these specifications, and through re-use ofpre-existing, pre-tested software components.

The techniques may be implemented in computer hardware or software, or acombination of the two. However, the techniques are not limited to anyparticular hardware or software configuration; they may findapplicability in any computing or processing environment that may beused for control system design. Preferably, the techniques areimplemented in computer programs executing on programmable computersthat each include a processor, a storage medium readable by theprocessor (including volatile and non-volatile memory and/or storageelements), at least one input device, and one or more output devices.Program code is applied to data entered using the input device toperform the functions described and to generate output information. Theoutput information is applied to the one or more output devices.

Each program is preferably implemented in a high level procedural orobject oriented programming language to communicate with a computersystem. However, the programs can be implemented in assembly or machinelanguage, if desired. In any case, the language may be a compiled orinterpreted language.

Each such computer program is preferably stored on a storage medium ordevice (e.g., CD-ROM, EEPROM, hard disk or magnetic diskette) that isreadable by a general or special purpose programmable computer orcontroller for configuring and operating the computer or controller whenthe storage medium or device is read by the computer or controller toperform the procedures described in this document. The system may alsobe considered to be implemented as a computer-readable storage medium,configured with a computer program, where the storage medium soconfigured causes a computer to operate in a specific and predefinedmanner.

Other features and advantages will be apparent from the followingdescription, including the drawings and the claims.

DESCRIPTION OF DRAWINGS

FIG. 1 is a block diagram of a design system for controls.

FIG. 2 is a block diagram of an appliance.

FIG. 3 is a flow chart of a procedure for producing an appliance usingthe system of FIG. 1.

FIG. 4 is a block diagram showing details of a tool of the system ofFIG. 1.

FIG. 5 is a representation of a user screen showing a replication of anappliance panel under design.

FIGS. 6A-6G are block diagrams of standard hardware modules of thesystem of FIG. 1.

FIG. 7 is a flow chart of a procedure for producing a control systemusing the system of FIG. 1.

FIG. 8 is a block diagram of an object model used by the system of FIG.1.

FIGS. 9-17 are screen displays of the system of FIG. 1.

FIGS. 18 and 19 are flow charts of procedures for designing and testingappliance control systems.

FIG. 20 is a flow chart of a procedure for designing and testing acontrol system for a device.

FIG. 21 is a block diagram of a system for designing and testing acontrol system for a device.

DETAILED DESCRIPTION

Referring to FIG. 1, a design system 100 uses a design tool 105 runningon a computer 110 along with a set of standard hardware control modules115 to simplify design and development of controls for a device 120,such as an appliance, a machine, or a machine tool. Through the computer110 and a communications link 125, the design tool 105 communicates witha standard hardware control module 115 that is connected to controlactive components 130 of a device 120.

Referring also to FIG. 2, an appliance or other device 120 typicallyincludes active components 130, a control panel 200, and a controller205 connected between the control panel 200 and the active components130. The control panel 200 provides the interface between the applianceand the appliance operator. The controller 205 receives inputs from thecontrol panel 200 and from sensors associated with the active components130, and generates control signals that control the active components130. The controller 205 also provides feedback to the control panel 200for use in controlling indicators and displays on the control panel 200.With the system 100, the controller 205 is embodied in the standardhardware control module 115, and the tool 105 is used to design thecontrol panel 200 and the software implemented by the hardware controlmodule 115.

The design tool 105 provides a library 135 of standard control objects140 that may be used by users to design and implement device controlsystems. The design system 100 promises to dramatically reducedevelopment time, to eliminate the need to hold large inventories ofcontrols for different models of a device, to permit cost-effectiveproduction of short-run, niche devices, and to allow upgrading ofexisting devices by simply reprogramming the controller. While thedesign system 100 may be used to design controls for a variety ofdifferent device types, the following discussion focuses on appliancecontrols.

The design system 100 permits engineers to reuse aspects of priordesigns in designing a new product. To this end, the tool 105 provides aseries of control objects 140 that may be used as provided, or modifiedas desired. For example, a typical control for starting a gas ovenincludes this sequence of events: open the gas valve, ignite the flame,bring the oven cavity temperature to a desired value, and maintain thattemperature until instructed otherwise. The control for an automaticwashing machine, when washing cotton fabric, might include this sequenceof events: fill the tub to a desired level, heat the wash water to adesired temperature, agitate for a designated number of minutes, drainthe tub, spin for a designated number of minutes, then shut off. Each ofthese sequences of steps is stored as a control object 140 in thelibrary 135. The library 135 of control objects 140 provides commoncontrol elements (e.g., buttons, switches, knobs, and indicators) andsoftware interfaces (e.g., oven or washer initiation sequences) betweenthose control elements and appliance components.

In general, a standard hardware control module includes a processor 145,RAM 150, flash memory 155, and interface hardware 160. During design,development, and testing, a standard hardware control module 115 isconnected to the device 120 to control active components 130 of thedevice. During production, the standard hardware control module isinstalled in the device. Use of the same hardware for development,testing, and production serves to eliminate, or at least substantiallyreduce, post-production operational problems.

After the control panel and the control software are designed using thetool 105, the control software is linked. The linked software mayinclude previously-tested modules, as well as new modules generated forthe particular control panel. The linked software then is downloaded tothe flash memory 155 of the module 115. Downloading the linked softwaremay involve replacing the entire contents of the flash memory 155, ormay involve merely replacing one or more modules of a previously-loaded(and previously-tested) system. Thereafter, the module 115 may beoperated to control the device 120. Prior to production, the module 115may be operated using inputs from a simulated control panel implementedby the tool 105. After production, the module 115 is operated undercontrol of an actual control panel 200. Through use of flash memory, thesoftware can be updated at a later date to correct problems or toprovide enhanced functionality.

The software-based design approach also permits development of nicheproducts. An example of such a product is a microwave oven with symbolsand controls geared to the specific needs of children or the elderly.Another example is an appliance that accounts for factors such as thealtitude, water hardness, or climate of a region to which the applianceis to be shipped. The appliance owner also can account for these factorsby reprogramming the control module upon moving the appliance betweenregions having substantially different conditions. This reprogrammingmay be provided over the telephone or over the Internet. To this end,the appliance may include a port that permits a connection to theowner's computer or a direct telephone or internet connection. TheInternet or a telephone connection also may be used to provide problemdiagnosis or repair.

Referring also to FIG. 3, product development using the system 100proceeds according to a four phase process 300. Initially, a prototypeis designed using only the design tool 105 and the computer 110 (step305). Next, the prototype is tested and debugged using an interfacemodule 165 connected between the computer 110 and the active components130 of the appliance (step 310). Essentially, the interface module is asingle hardware device that implements all variations of the set ofstandard hardware control modules 115. Use of the interface modulepermits the prototype to be designed without selecting the particularhardware control module to be used in the appliance. This allowsselection of the optimal control module 115 after the design iscomplete. The tool 105 provides a virtual control panel that isdisplayed on a display 170 of the computer and permits the computer 110to operate the interface module, which, in turn, operates the activecomponents 130 of the appliance.

Once the design is debugged and the desired hardware control module 115is selected, the hardware control module and the hardware control panelare installed in the appliance and further testing is performed (step315). During this phase of the process, the computer 110 is used toacquire data from the appliance for analysis of the design. Finally,once all testing is complete, the appliance is ready for production(step 320).

Design Tool 105

Referring to FIG. 4, the design tool 105 may be used to designprocessor-based control systems, such as may be used in an appliance400. Major components of the tool 105 include a panel building workbench405, a logic workbench 410, a state machine workbench 415, an appliancehardware workbench 420, a materials workbench 425, a project managementworkbench 430, a configuration manager workbench 435, a specificationworkbench 440, a molding workbench 445, a test workbench 450, a dataacquisition workbench 455, a linker 460, a communications package 465,an appliance parts database 470, an appliance control database 475, anda virtual panel 480. Each component of the tool 105 performs a specificfunction and works interactively with the other components of the tool105.

The tool 105 and its components are implemented by the computer 110, thedisplay 170 of which may be used to display the virtual panel 480 anduser interfaces of other system components. In one implementation, thecomputer is a conventional personal computer having an Intel Pentiumprocessor, or the equivalent, and running Windows NT or a comparableoperating system. The computer also includes sufficient memory, storage,I/O, processor speed, and peripherals to accomplish the designatedfunctions. The computer also may be implemented using a laptop ornotebook computer. The tool 105 communicates with the interface module165, which is also referred to as the rapid-prototyping hardwareplatform, or with a standard hardware control module 115, which is alsoreferred to as the target hardware platform, through the communicationslink 125.

Panel Building Workbench 405

The panel building workbench 405 is a graphical drawing tool. Referringalso to FIG. 5, the user screen 500 is split vertically into twospecific areas. The left side 505 of the screen (one-fourth of thescreen) is populated with icons 510 that may be used to selectthree-dimensioned photorealistic representations 515 of standardhardware objects (e.g., buttons, knobs, dials, displays). The right side520 of the screen (three-fourths of the screen) is defined as a workarea where the user designs a new control panel 525 that serves as theinterface for the control system. The panel building workbench may beimplemented using, for example, Visio graphics software available fromVisio Corporation.

The characteristics of each icon 510 (e.g., size, shape, electricalconnection, voltage requirements, and state logic description) arepredefined and stored in the appliance control database 475. When theuser selects an icon 510 and moves the representation 515 to the workarea 520, the tool 105 retrieves the characteristics of the icon fromthe appliance control database 475 and deposits data related to thecharacteristics into other workbenches. For example, electricalconnection, voltage requirements and state logical characteristics aresent to the logic workbench 410. Similarly, the part number, vendordata, cost and lead time are sent to the project management workbench430 and the materials workbench 425.

The design process starts with the user defining the overall size andshape of the control panel 525. To this end, the work area 520 includesvertical and horizontal rulers 530. Next, the user places objectrepresentations 515 onto the control panel 525 by using a mouse or otherpointer device of the computer to select an appropriate icon 510 and todrag the representation 515 into the work area 520. The user can modify,for example, the location on the control panel, the size, the shape, thecolor, and the text for each representation 515 that is moved into thework area 520. When the panel design is complete, the user saves thedrawing to a file for future reference.

One advantage of this system is that the user designs the panel and seesthe actual panel as built. By contrast, traditional design approachesrequire a designer to write a specification that then is interpreted byother designers who produce a panel according to their interpretation ofthe specification.

Logic Workbench 410

The logic workbench 410 allows the user to create the desired controllogic for the appliance 400. As noted above, the logic workbench 410 isautomatically populated with standard component characteristics as thecontrol panel 525 is generated. The logic workbench 410 permits the userto edit these standard characteristics to establish the desired controllogic. After all editing is complete, the user can send the finalcontrol logic to the linker 460 for linking, which may be followed bydownloading using the communications package 465 and testing using thetest workbench 450.

State Machine Workbench 415

The state machine workbench 415 allows the user to build and maintainone or more libraries of predefined components. These componentsdescribe the elementary control functions of the hardware devices usedin the development of device functionality. The state machine workbenchallows the user to define the states of operation of the device and tolink any of the components to any of these states to further define thefunction of the device in each state. The user can further define thelogical process of transition through the various states of operation ofthe device. The states and their transition logic are stored in theappliance control database 475.

Appliance Hardware Workbench 420

The hardware workbench 420 allows the user to create and maintaindatabase 470 and 475 of information associated with the parts that areused to build the appliance control panels. Data is retrieved from theappliance parts database 470, manipulated by the user, and stored intothe appliance control database 475. The appliance parts database 470 canbe maintained by the user, or by the user's customer. For example, acustomer's purchasing department may maintain its own appliance partsdatabase 470. These databases may be shared, if desired and authorized.The parts information retrieved from the appliance parts database 470may include, for example, part number, vendor data, price and lead-timeinformation. All of the data is inserted into database records andstored in the appropriate appliance control database 475. As shown inFIG. 4, all workbench tools have access to the appliance controldatabase 475, while access to the appliance parts database 470 islimited.

Materials Workbench 425

The materials workbench 425 automatically creates a bill of materialsfor the new control panel that is developed in the panel workbench 405.The materials workbench 425 acquires input from the panel buildingworkbench 405 and, based on the devices selected, accesses the applianceparts database 470 and the appliance control database 475 to acquirepart numbers, vendor identification, price, and parts delivery leadtime. The materials workbench outputs this data to a file that can beaccessed by the user.

Project Management Workbench 430

The project management workbench 430 automatically generates a projectschedule that includes a task list, duration, milestones, staffingrequirements, and one or more proposed budgets. This workbench receivesinput from the panel building workbench 405, the materials workbench425, and the appliance control database 475 to determine time and costestimates based on the parts selected. The project management workbenchgenerates a schedule and illustrates the schedule in a selected chartformat. The user can then edit and save the schedule for futurereference.

Configuration Manager Workbench 435

The configuration manager workbench 435 permits the user to define theoperational parameters for the system. The user has the ability todefine parameters for the hardware, communications, systemadministration functions, and any other required configurationparameters.

Specification Workbench 440

The specification workbench 440 automatically generates a detaileddesign specification document for the new control board or panel. Theworkbench 440 receives inputs from the panel building workbench 405, thelogic workbench 410, the state machine workbench 415, the materialsworkbench 425, the configuration manager workbench 435, and theappliance control database 475. The output of this workbench may be, forexample, a text file that can be edited in a conventional wordprocessing package.

Molding Workbench 445

The molding workbench 445 receives input from the panel buildingworkbench 405. In one implementation, this input is in the form of a CADdrawing file of the new appliance control panel. The molding workbench445 can output this CAD drawing file to any of several available plasticmodeling tools to produce a physical, three-dimensional model of thecontrol panel. This physical model then can be used to verify form andfit of the prototype control panel in a cavity of the appliance 400intended for the production control panel. This feature vastly improvesthe development cycle by producing a three-dimensional plastic modelwithin a very short time. For example, the prototype can be available inone to two weeks, which allows for modifications in both the controlpanel and appliance designs at a very early, economical stage ofdevelopment.

Test Workbench 450

The test workbench 450 includes a library of standard test scripts usedto perform various tests on appliances. Examples include regression andacceptance tests. The user can select predefined tests from the standardlibrary to run against the newly-developed control panel. The testworkbench 450 also may include a test creation tool that assists theuser in creating and modifying specific tests that can be saved in thestandard library. A benefit of using standard test scripts is asignificant time reduction in the testing cycle. Another benefit is easeof modifying old tests and developing new tests.

Data Acquisition Workbench 455

The data acquisition workbench 455 monitors performance parameters ofthe hardware in the interface module 165 or the standard hardwarecontrol module 115. This workbench uses the virtual panel 480 and thecommunications package 465 to acquire data from the hardware module.

The workbench permits the user to select the data to be monitored, andto start and stop operation in the data acquisition mode. Once theappliance is configured for data acquisition, performance parameters arecommunicated from the appliance hardware to the virtual panel 480. Thiscommunication may occur at predefined time intervals. The data collectedcan be displayed online and logged to a file for future analysis andverification. Tests run on the appliance hardware can be created by theuser or selected from the test workbench 450.

Linker 460

The linker 460 converts all of the code generated by the logic workbench410, the state machine workbench 415, and the configuration managerworkbench 435 into a predefined binary format recognized by softwareembedded in the interface module 165 or the hardware module 115.

Communications Package 465

The communications package 465 is a messaging system that allows thevirtual panel 480 to communicate with the interface module 165 or thehardware module 115. The messages transmitted between the virtual paneland the module are predefined and allow operation of the appliance 400to be controlled from the computer. In particular, the user can run thevirtual panel 480 on the computer to control and monitor the operationof the appliance in real-time. The running appliance can send updatemessages to the computer to update the virtual panel 480.

The communications package may be used to communicate with multipleappliances at the same time, through a single port or multiple ports.For example, multiple appliances can be controlled simultaneously usingone or more virtual panels running on a single computer.

Appliance Parts Database 470

The appliance parts database 470 may be implemented as a relationaldatabase that contains information on all of the parts used to buildappliance control boards/panels. Companies that build control boardsnormally maintain an appliance parts database 470. The tool 105 cancommunicate with any open database compliant (ODBC) system, or theequivalent, for data retrieval. Data from the appliance parts databaseare used as inputs to the appliance hardware workbench 420 and thematerials workbench 425.

Appliance Control Database 475

The appliance control database 475 may be implemented as a relationaldatabase containing information for each of the parts that are used tobuild control boards. Detailed information for each part includes, forexample, size, shape, color, electrical characteristics, state logic,and any other information required by any workbench.

Virtual Panel 480

The virtual panel 480 allows the user to control and monitor a runningappliance from the computer. The control panel designated with the panelbuilding workbench 405 is used as an active display to mimic the actualappliance control panel. The virtual panel 480 uses the communicationspackages to send commands to the standard hardware platform 115 andreceive updates from the hardware. The user can start, stop, and changethe position of controls such as buttons, switches, and knobs on thevirtual panel, and have these actions communicated to the appliancehardware. Any changes in the appliance hardware display are communicatedto the virtual panel 480 as update messages to the panel.

Standard Hardware Control Modules 115

The standard hardware control modules 115 provide a scalable approach tohardware definition. They allow the user to select a hardware platformbased on criteria such as input/output pin counts, RAM size, ROM size,display requirements (LED, VFD, LCD), and desired power requirements.The hardware may be selected from a standard family of microprocessorsor controllers based on design requirements. Each microprocessor orcontroller in the family is capable of running standard embeddedsoftware that may be configured per appliance. For example, oneimplementation uses seven different types of standard hardware modules,with the modules differing based on their pin counts (ranging from 13pins for the simplest module to 80 pins for the most complex module) andperformance characteristics. FIGS. 6A-6G illustrate characteristics ofthe seven types of hardware modules.

Interface Module 165

In essence, the interface module 165 is one or more modules includingall permitted variations of the standard control modules 115. Since theinterface module supports all of the variations, it provides a useful,efficient mechanism for testing those variations. Furthermore, itpermits the user to delay selection of the particular control module tobe used until the design is complete. This permits the user to selectthe control module that is optimal for the final design.

Product Development Using the System

FIG. 7 illustrates one implementation of the product development process700 using the tool 105. Initially, a user lays out the appliance controlpanel using the panel building workbench 405 (step 705). As noted above,the panel building workbench uses the appliance control database 475 andautomatically sends information about the panel design to otherworkbenches, such as the logic workbench 410, the project managementworkbench 430, and the materials workbench 430.

Once the control panel design is complete, the user builds the controllogic for the panel using the logic workbench 410 and the state machineworkbench 415 (step 710). This process uses standard control objectsfrom the appliance control database 475, which speeds the developmentprocess significantly. As noted above, control objects embodied in theelements of the panel are provided automatically to the logic workbench410 by the panel building workbench 405.

The materials workbench 430 then automatically generates a bill ofmaterials (step 715) using information from the panel building workbench405, the logic workbench 410, and the parts database 470. Similarly, theproject management workbench automatically generates a project schedule(step 720), and the specification workbench 440 automatically generatesa detailed design specification (step 725).

At this time, the user may use the molding workbench 445 to produce aplastic model of the control panel (step 730). If necessary, the controlpanel design then may be further refined (step 705).

Next, the linker 460 links the control logic (step 735). Thecommunications package 465 then downloads the linked control logic tothe interface module 165 or the control module 115 (step 740), which isconnected to the appliance 400 to be controlled.

Using the data acquisition workbench 455, the virtual panel 480, and thetest workbench 450, the user then tests the control panel design (step745) on the actual hardware to be included in the appliance. This offersconsiderable advantages over merely simulating operation of the controlpanel. If necessary, refinements may be made to the control panel design(step 705) or the control logic (step 710) in response to the testresults.

System Object Model

Referring to FIG. 8, the system 100 maintains control system designsusing an object model 800. The designs are stored in an applicationdatabase 805 that is subdivided by users 810. Properties associated witha user include a user name 811, a password 812, and project information813. Functions associated with a user include adding a user (814),deleting a user (815), changing the user's password (816), and changingthe user's rights (817).

A set of one or more projects 820 is associated with each user 810.Properties of a project include the project name 821, the associateduser 810, and a description 822 of the project. Functions associatedwith projects include adding a project (823), updating a project (824),deleting a project (825), exporting a project (826), importing a project(827), and renaming a project (828).

A set of one or more control panels 830 is associated with each project820. Properties of a control panel includes the name 831, the controllertype 832, and the controller name 833 for the control panel. Functionsassociated with control panels include deleting a control panel (834),adding a control panel (835), closing a control panel (836), saving acontrol panel (837), saving a control panel under a different name(838), attaching a control panel to the communications link (839), anddetaching the control panel from the communications link (840).

One or more panel objects 850 are associated with each control panel830. Properties of a panel object include the function 851 of theobject, the name 852 (objectid) of the object, the component type 853 ofthe object, and the class 854 of the object. Functions associated withobjects include adding an object (855), deleting an object (856), andcopying an object (857).

Control logic also is associated with each project. For example, when aproject implements a washing machine, the control logic is representedby a wash chart object 860. Properties of a wash chart object 860include the name 861 of the wash chart, the name 862 of the controlpanel associated with the wash chart, the options file 863 associatedwith the wash chart, and the hardware configuration file 864 associatedwith the wash chart. Functions associated with wash charts includeadding a wash chart (865), opening a wash chart (866), deleting a washchart (867), and saving a wash chart (868).

System Operation Example

System operation now will be described with respect to the example ofdesigning a control panel for a washing machine, using screen displaysof an implementation of the tool 105. The implementation is aWindows-based application that provides an interface having the samelook and feel as well known programs, such as Microsoft Word orMicrosoft Excel.

Referring to FIG. 9, upon system initiation, a login dialog 900 requiresa user to log into the system by typing a user name 811 and a password812. This login requirement serves to protect proprietary designinformation, such as appliance behavior models, from unauthorizedaccess.

Referring to FIG. 10, once the user logs into the system, a projectselection dialog 1000 is presented. The project selection dialog permitsthe user to select a project 820 on which to work. An Add button 1005,an Open button 1010, a Save button 1015, a Delete button 1020, and aClose button 1025 permit the user to operate on the list of projects.For example, the user can use the Add button 1005 to add a new project.Projects may be set up on a client basis, with all projects associatedwith a particular client stored together. Alternatively, projects may bedefined on a project-by-project basis with, for example, multipleversions of a derivative project grouped together.

For each project, the user must specify the project name 821 and mayenter a project description 822. The user also must select an appliancetype 1030 from a list of supported appliance types. Examples ofsupported appliance types include Washer, Dryer, Washer/Dryer, Cooking,and Dishwasher.

The appliance type 1030 for the project controls which other dialogs arepresented to the user. For example, if an appliance type of Washer isselected, a wash chart selection dialog 1100, such as is shown in FIG.11, is presented to the user. The wash chart selection dialog 1100 issimilar to the project selection dialog 1000, and allows user managementof all wash charts 860 that may be associated with a project. The washchart selection dialog 1100 provides an Add button 1105, an Open button1110, a Save button 1115, a Delete button 1120, and a Close button 1125that permit the user to perform the corresponding functions.

Three files are associated with each wash chart 860: an options file 863that defines user interface options, a hardware configuration file 864that defines the hardware configuration, and an appliance control panelfile 862 that specifies an appliance control panel associated with thewash chart 860. Use of these separate files permits the wash chart to bedesigned independently of hardware specific data for use across multipleproducts.

Upon selecting a wash chart 860, the user is permitted to edit theassociated control panel using the panel building workbench 405, or toedit the associated control logic using the logic workbench 410 andstate machine workbench 415. Selection of the panel building workbench405 is illustrated in FIG. 5 and discussed above. Each panel element maybe customized as desired by the user. Properties that may be modifiedinclude the shape and color of the element, whether the element isthree-dimensional or provides a flat panel appearance, whether there isan indicator on or near the element, and the color of that indicator. Inaddition, text or icons associated with an element may be positioned asdesired, and may be in any desired color or font.

Referring to FIG. 12, an assign appliance function dialog 1200 is usedto correlate the panel objects (e.g., the buttons, knobs, and displayindicators) to operational functions of the appliance. To assign afunction 851 to a panel object, the user selects the object andactivates the assign appliance function dialog 1200. The dialogidentifies the name 1205 of the object, the current assigned function1210 for the object, and a list 1215 of all available appliancefunctions for the object type. The user uses the mouse to select one ofthe available functions from the list 1215 and then actuates an assignbutton 1220 to cause the selected function to become the currentassigned function 1210. For example, as shown in FIG. 12, the spin speedselection function has been selected for the rotary knob 1225. Thisassignment determines how the control panel will communicate desiredspin speed information to the controller of the washing machine.

Referring to FIG. 13A, the panel building workbench 405 also may be usedto edit an existing control panel 1300. As shown, the control panel 1300includes a start program button 1305 with an associated icon 1310, a nospin option button 1315 with an associated icon 1320, a load size optionbutton 1325 with an associated icon 1330, a cycle status indicator 1335with an associated icon 1340, a water temperature setting knob 1345 withan associated icon 1350, and a wash program selection knob 1355 with anassociated icon 1360. Referring also to FIG. 13B, a gentle wash cyclebutton 1365 may be added to the control panel by copying and pasting theload size option button 1325 to the desired location, and changing theassociated icon 1370 to indicate gentle wash. The assign appliancefunction dialog 1200 then is used to assign a fragile textile functionto the button 1365.

As noted above, the user also can edit the wash chart (i.e., the controllogic) for the washer. Essentially, the wash chart is a collection ofprograms for different textiles. For example, a wash chart might includea program for synthetic textiles, a program for cotton textiles, aprogram for wool textiles, and a program for delicate textiles. Eachprogram controls the duration and sequence of different stages of thewash cycle (e.g., fill, wash, rinse, or spin), and the motion, if any,of the washer drum during each stage. Each program may include optionalcomponents, such as pre-washing or temperature settings.

Referring to FIG. 14, the collection of textile programs that make upthe wash chart may be edited by invoking a wash chart editor dialog1400. Using the dialog 1400, the user selects a textile chart 1405(e.g., cotton) to edit a particular textile program. The textile programis represented as a set of program lines 1410, each of which includes aline number 1415 and a sequence number 1420. A line number 1415 uniquelyidentifies a program line 1410. However, multiple lines can have thesame sequence number. When this occurs, the line executed in the textileprogram varies based on a setting of the control panel. For example,lines 12 and 13 each have the sequence number 7.01. Line 13, whichcorresponds to gentle washing, is executed when the gentle wash button1365 has been selected, while line 12, which corresponds to normalwashing, is executed when the gentle wash button 1365 has not beenselected.

Each line 1410 also includes a script field 1425, which labels the line,and a function field 1430, which identifies the function performed bythe line. An options field 1435 identifies the conditions under whichthe line is implemented. For example, line 12 has an option label ofNormal Textile, which indicates that line 12 is implemented when normalwashing has been selected, while line 13 has an option label of GentleTextile, which indicates that line 13 is implemented when gentle washinghas been selected. Similarly, lines 1-9 include option labels of PW1,which indicates that these lines are implemented when prewashing hasbeen selected.

An EV field 1440 indicates whether implementation of the line involvesoperation of a valve or pump of the washer. A level field 1445 indicateswhether the valve or pump is operated until a designated water level isobtained. An associated advance field 1447 indicates whether the programadvances to the next sequence number upon reaching the designated waterlevel.

A temperature field 1450 indicates whether implementation of the lineinvolves keeping or setting the water temperature to a desired value. Anassociated advance field 1452 indicates whether the program advances tothe next sequence number upon reaching the designated temperature.

A timer1 field 1455 indicates whether a first timer is to be initiatedby implementation of the line and the time value to which the timer isto be initiated. An associated advance field 1457 indicates whether theprogram advances to the next sequence number upon expiration of thefirst timer. A timer2 field 1460 and an associated advance field 1462operate in the same way with respect to a second timer.

A timeout field 1465 indicates whether a value is to be set for atimeout timer that causes the program to advance to the next line. Anassociated advance field 1467 indicates that such an advance will occurwhenever a value is provided for the timeout timer.

A motor profile field 1470 identifies a motor profile associated withthe line. The motor profile controls how the washer motor is operated,and thereby controls drum motion. For example, the motor profileassociated with step 12 is designated as “Normal”, while the motorprofile associated with step 13 is designated as “Gentle”.

Referring to FIG. 15, a motor profile editor dialog 1500 permits theuser to edit different motor profiles. The user selects a particularmotor profile 1505 having an associated name 1510. The profile 1505consists of a sequence of steps 1515, each of which has an associatedstep number 1520.

Each step 1515 has an associated motor operation function 1525. Themotor operation functions define basic actions to be taken by the motor.In one implementation, the functions include StopWait, which causes themotor to stop driving the drum, but permits the drum to spin freely;Run, which causes the motor to run at a specified speed and direction ofrotation; Ramp, which causes the motor to ramp its speed from a firstspeed to a second speed; Peak, which causes the motor to increase itsspeed until a desired speed is reached; EndSpin, which causes the motorto stop rotation of the motor drum; ChangeTarget, which causes the motorto change the desired rotation speed; SetUnb, which causes the motor toattempt to remove an unbalanced load condition; StartUnb, which causesthe washer to indicate that an unbalanced load condition has occurred;TestUnb, which causes the washer to test for an unbalanced loadcondition; WaitSpeed, which causes the motor to permit the drum todecelerate until a desired speed is reached; and SpinRhythm, whichcauses the motor to spin the drum with a desired rhythm.

Each step also includes a next step field 1530 that indicates the nextstep to be performed by the motor. A time field 1535 indicates how longthe motor should operate in the current step before advancing to thenext step.

A final speed field 1540 indicates the desired rotation speed for thedrum, and an associated direction field 1545 indicates the desireddirection of rotation. An initial speed field 1550 indicates thestarting rotation speed. This field is used by the Ramp function.

A load field 1555 indicates the amount of motor load that will triggeran unbalanced condition. This field is used by the TestUnb function.

An unbalanced step field 1560 indicates a step to be performed by themotor in the event that an unbalanced condition occurs. Similarly, afail step field 1565 indicates a step to be performed by the motor inthe event that the motor fails to achieve the conditions of the currentfunction.

A rhythm field 1570 indicates a rhythm associated with the step.Finally, an iterations field 1575 indicates a number of iterations ofthe step to be performed. The iterations field is used by the SetUnb andSpinRhythm functions.

FIG. 15 also illustrates a rhythm editor dialog 1600 used to create amotor operation rhythm. The rhythm editor dialog 1600 permits the userto identify a rhythm 1605 having a name 1610. After identifying therhythm, the user selects the durations of an initial stop period 1615,an initial run period 1620, a subsequent stop period 1625, and asubsequent run period 1630. The user also can separately designate therotational speeds 1635 and directions 1640 for the two run periods 1620,1630. For example, the normal rhythm shown in FIG. 15 causes the drum ofthe washer to stop for 3 seconds, rotate in a clockwise direction at 55RPM for 12 seconds, stop for 3 seconds, and rotate in acounter-clockwise direction at 55 RPM for 12 seconds. By contrast, thegentle rhythm shown in FIG. 16 causes the drum of the washer to stop for12 seconds, rotate in a clockwise direction at 35 RPM for 3 seconds,stop for 12 seconds, and rotate in a counter-clockwise direction at 35RPM for 3 seconds.

Referring to FIG. 17, a wash dial configuration profile 1700 may be usedto configure how different textile programs and program steps correspondto positions of a dial on the control panel. Positions of the wash dialare designated by a series of steps 1705, each of which is identified bya step number 1710. A textile program 1715 and a position in the script1720 of the textile program are associated with each step.

Referring again to FIG. 14, after making any other desired changes tothe wash chart, the user generates the wash chart by selecting the linkoption 1475 from the tools menu 1480. The link option creates a datafile that can be downloaded to the appropriate hardware for testing.

Referring to FIG. 18, testing and refinement of a control system for anappliance using one implementation of the tool 105 may proceed accordingto a procedure 1800, referred to as an appliance functional interface(“AFI”). The AFI provides an interface between a virtual appliancecontrol panel and the controller of an actual appliance. This allows thevirtual panel to act as the user interface for the appliance in order tocontrol the appliance as if the virtual panel is actually theappliance's control panel. The AFI provides a translation layer whichtranslates an appliance function such as start bake or spin speed to avirtual panel object such as a display or a button.

Initially, the appliance type (e.g., clothes washer) is set (step 1805).Thereafter, an appliance function table for the selected appliance typeis loaded (step 1810) and available functions for the appliance type areretrieved (step 1815).

Next, an appliance function is assigned to a panel object (step 1820).This step is repeated until all functions have been assigned tocorresponding panel objects (step 1825).

Next, a controller type is defined for the appliance and its associatedfunctions (step 1830). In general, the controller type is selected froma group of standard controller types (such as the standard hardwarecontrol modules illustrated in FIGS. 6A-6G and discussed above), and isselected based on performance requirements of the appliance type and thesoftware needed to implement the appliance functions.

After verifying that the selected controller type is connected to thecomputer (step 1835), the procedure waits for the user to initiate livecontrol of the appliance (step 1840). The following discussion of livecontrol assumes that the appliance is a clothes washer. Live control ofother appliances would proceed similarly.

To begin live control, the procedure compiles the wash chart for theappliance (step 1845) and downloads the wash chart to the controller(step 1850). The procedure then initializes live control of thecontroller by the virtual control panel (step 1855).

During live control, if a controller event is detected (step 1860), theprocedure passes the event to the virtual panel (step 1865) to updatethe virtual panel. Similarly, if a panel message is detected (step1870), the procedure passes the panel message (i.e., a virtual controlsignal) to the controller (step 1875). This continues until the userstops live control of the appliance (step 1880).

As illustrated by procedure 1900 of FIG. 19, the AFI operates similarlyfor the case in which all appliance functions have already been assignedto corresponding panel objects. Initially, a virtual panel file is read(step 1905) and an appropriate appliance function table is loaded (step1910). Thereafter, available functions for the appliance type areretrieved (step 1915).

Next, a relationship table that links panel objects to appliancefunctions is retrieved (step 1920) and the relationships arere-assigned, if necessary, to reflect any changes in the control panelor the controller (step 1925). After verifying that the controller typefrom the virtual panel file is connected to the computer (step 1930),the procedure proceeds with live control as discussed above.

In summary, a control system for a device, such as an appliance, may begenerated according to the procedure 2000 illustrated in FIG. 20. First,software representations of pre-existing control panel components andcontrol processes are stored on a computer (steps 2005 and 2010). Ingeneral, the software representations constitute reusable, pre-testedmodules. The computer then is used to develop a control panel for thedevice by selecting and placing software representations of preexistingcontrol panel objects in a software representation of the control panel(step 2015). The computer is also used to develop control software forthe device by selecting software representations of pre-existing controlprocesses and associating the selected control processes with theselected control panel objects (step 2020). The control software isdownloaded from the computer to control hardware to be included in thedevice (step 2025). Finally, the device is tested using the controlsoftware running on the control hardware and under the control of thecomputer (step 2030).

FIG. 21 illustrates a system 2100 for generating a control system for adevice 2105. The system includes a computer 2110 having an input unit2115, an output unit 2120, a processor 2125, a storage device 2130, anda display 2135. Software representations 2140 of pre-existing controlpanel components are stored on the storage device 2130. The system alsoincludes control hardware 2145 connectable to active components 2150 ofthe device 2105 and operable to receive data from the output unit 2120of the computer 2110. The processor 2125 is programmed to present arepresentation of a control panel on the display, to permit a user todevelop the control panel and control software for the device by usingthe input device to select and place representations of pre-existingcontrol panel components on the displayed representation of the controlpanel, to download the control software from the computer to the controlhardware through the output unit, and to test the device using thecontrol software running on the control hardware and under the controlof the computer through the output unit.

Other embodiments are within the scope of the following claims. Forexample, the functions of generating the control panel and controlsoftware may be implemented separately from the testing function. In oneaspect of this, the control panel and control software are generatedusing a computer, and then are downloaded, by, for example, an infraredlink, to a personal digital assistant (“PDA”) that is connected to theappliance and used to control the appliance.

What is claimed is:
 1. A method of designing a control system for adevice, the method comprising: storing software representations ofpre-existing control panel components on a computer: storing softwarerepresentations of pre-existing control processes on the computer; usingthe computer to develop a control panel for the device by selecting andplacing software representations of pre-existing control panel objectsin a software representation of the control panel; using the computer todevelop control software for the device by selecting softwarerepresentations of pre-existing control processes and associating theselected control processes with the selected control panel objects;downloading the control software from the computer to control hardwareto be included in the device; and testing the device using the controlsoftware running on the control hardware and under the control of thecomputer; generating a virtual control panel at the computer, thevirtual control panel embodying the control panel designed for thedevice; permitting a user to manipulate the virtual control panel togenerate virtual control inputs; and transmitting the virtual controlinputs to the control hardware to control the control hardware.
 2. Themethod of claim 1, wherein transmitting the virtual control inputscomprises transmitting the virtual control inputs using a communicationsprotocol.
 3. The method of claim 1, wherein the control hardwarecomprises a standard hardware control module for implementing thecontrol software and having a communications interface, the methodfurther comprising: connecting the standard hardware control module tooperating components of the device; and connecting the standard hardwarecontrol module to the computer through the communications interface. 4.The method of claim 3, further comprising, after testing the device,including copies of the standard hardware control module in productionversions of the device.
 5. The method of claim 3, further comprisingselecting the standard hardware control module from a set of predefinedstandard hardware control modules.
 6. The method of claim 1, wherein thecontrol hardware comprises a collection of standard hardware controlmodules, the method further comprising selecting one or more standardhardware control modules from the collection and including copies of theselected standard hardware control modules in production versions of thedevice.
 7. The method of claim 1, further comprising storing softwarerepresentations of active device components, wherein using the computerto develop the control panel and the control software for the devicefurther comprises selecting one or more representations of active devicecomponents and associating the selected active device components withone or more selected control processes or selected control panelobjects.
 8. The method of claim 1, wherein a software representation ofa pre-existing control process comprises a list of sequential controlsteps.
 9. The method of claim 1, wherein a software representation of apre-existing control process comprises a state machine.
 10. The methodof claim 1, wherein using the computer to develop a control panel andcontrol software for the device comprises using graphical techniques todisplay the software representation of the control panel and to selectand place software representations of the control panel components onthe displayed software representation of the control panel.
 11. Themethod of claim 10, further comprising representing the softwarerepresentations of control panel components using displayed icons. 12.The method of claim 11, further comprising displaying a selected icon asa three-dimensional representation of a corresponding control panelcomponent.
 13. The method of claim 10, wherein using graphicaltechniques comprises using a graphical drawing tool.
 14. The method ofclaim 13, wherein the graphical drawing tool displays icons representingthe pre-existing control processes.
 15. The method of claim 1, whereinthe device comprises an appliance.
 16. The method of claim 15, whereinthe appliance comprises a clothes washer.
 17. The method of claim 1,further comprising using a computer-controlled modelling system togenerate a three-dimensional model of the control panel.
 18. The methodof claim 1, further comprising storing pre-existing control software inthe control hardware.
 19. The method of claim 18, wherein downloadingthe control software from the computer to the control hardware comprisesadding one or more modules to the pre-existing control software.
 20. Themethod of claim 18, wherein downloading the control software from thecomputer to the control hardware comprises replacing one or more modulesof the pre-existing control software.
 21. The method of claim 1, furthercomprising using the computer to automatically generate a designspecification from the control panel.
 22. The method of claim 1, furthercomprising: providing a collection of standard hardware control modules,each control module being capable of running standard software andhaving different performance characteristics; and selecting one or moreof the standard hardware control modules as the control hardware for thedevice based on performance characteristics required by the controlpanel and the control software.
 23. The method of claim 22, whereinselecting one or more of the standard hardware control modules compriseshaving the computer automatically select the one or more of the standardhardware control modules based on performance characteristics requiredby the control panel and the control software.
 24. A method of designingcontrol software for a device, the method comprising: storing softwarerepresentations of pre-existing control processes on a computer; usingthe computer to develop control software for the device by selectingsoftware representations of pre-existing control processes andassociating the selected control processes with each other; downloadingthe control software from the computer to control hardware to beincluded in the device; and testing the device using the controlsoftware running on the control hardware; generating a virtual controlpanel for the device at the computer; permitting a user to manipulatethe virtual control panel to generate virtual control inputs;transmitting the virtual control inputs to the control hardware tocontrol the control hardware.
 25. The method of claim 24, wherein thecontrol hardware comprises a standard hardware control module forimplementing the control software and having a communications interface,the method further comprising: connecting the standard hardware controlmodule to active components of the device; and connecting the standardhardware control module to the computer through the communicationsinterface.
 26. The method of claim 24, further comprising having thecomputer automatically generate a list of control panel componentsneeded for a control panel of the device based on requirements of thecontrol software.
 27. The method of claim 24, further comprising:storing software representations of pre-existing control panelcomponents on the computer; using the computer to develop a controlpanel for the device by selecting and placing software representationsof pre-existing control panel objects in a software representation ofthe control panel; and associating the selected control processes withthe selected control panel objects.
 28. The method of claim 24, whereinthe control hardware comprises a standard hardware control module forimplementing the control software and having a communications interface,the method further comprising: connecting the standard hardware controlmodule to operating components of the device; and connecting thestandard hardware control module to the computer through thecommunications interface.
 29. The method of claim 24, further comprisingstoring software representations of active device components, whereinusing the computer to develop the control software for the devicefurther comprises selecting one or more representations of active devicecomponents and associating the selected active device components withone or more selected control processes.
 30. The method of claim 24,wherein using the computer to develop control software for the devicecomprises using graphical techniques to display the softwarerepresentations of the pre-existing control processes.
 31. The method ofclaim 30, wherein using graphical techniques comprises using a graphicaldrawing tool that displays icons representing the pre-existing controlprocesses.
 32. The method of claim 24, further comprising storingpre-existing control software in the control hardware.
 33. The method ofclaim 32, wherein downloading the control software from the computer tothe control hardware comprises adding one or more modules to thepre-existing control software.
 34. The method of claim 32, whereindownloading the control software from the computer to the controlhardware comprises replacing one or more modules of the pre-existingcontrol software.
 35. The method of claim 24, further comprising:providing a collection of standard hardware control modules, eachcontrol module being capable of running standard software and havingdifferent performance characteristics; and selecting one or more of thestandard hardware control modules as the control hardware for the devicebased on performance characteristics required by the control software.36. The method of claim 35, wherein selecting one or more of thestandard hardware control modules comprises having the computerautomatically select the one or more of the standard hardware controlmodules based on performance characteristics required by the controlsoftware.
 37. A method of designing a control panel for a device, themethod comprising: storing software representations of pre-existingcontrol panel components on a computer; using the computer to develop acontrol panel for the device by selecting and placing softwarerepresentations of pre-existing control panel objects in a softwarerepresentation of the control panel; testing the device by running thecontrol hardware under the control of the control panel on the computer;generating a virtual control panel at the computer, the virtual controlpanel embodying the control panel designed for the device; permitting auser to manipulate the virtual control panel to generate virtual controlinputs; and transmitting the virtual control inputs to the controlhardware to control the control hardware.
 38. The method of claim 37,wherein transmitting the virtual control inputs comprises transmittingthe virtual control inputs using a communications protocol.
 39. Themethod of claim 37, wherein using the computer to develop the controlpanel for the device comprises using graphical techniques to display thesoftware representation of the control panel and to select and placesoftware representations of the control panel components on thedisplayed software representation of the control panel.
 40. The methodof claim 39, further comprising representing the softwarerepresentations of control panel components using displayed icons. 41.The method of claim 40, further comprising displaying a selected icon asa three-dimensional representation of a corresponding control panelcomponent.
 42. The method of claim 39, wherein using graphicaltechniques comprises using a graphical drawing tool.
 43. The method ofclaim 37, further comprising using a computer-controlled modellingsystem to generate a three-dimensional model of the control panel. 44.The method of claim 37, further comprising using the computer toautomatically generate a design specification from the control panel.45. A method of generating a design specification for a control panelfor a device, the method comprising: using a computer to graphicallygenerate a control panel for a device; and using the computer toautomatically generate the design specification from the control panel.46. The method of claim 45, wherein using the computer to graphicallygenerate the control panel for the device comprises using one or morepre-existing objects.
 47. The method of claim 45, wherein a pre-existingobject includes a graphical representation of a physical embodiment ofthe object and a logical representation of operation of the object. 48.A method of designing a control system for a device, the methodcomprising: providing a collection of standard hardware control modules,each control module being capable of running standard software andhaving difficult performance characteristics; using a computer todevelop a control panel and control software for the device; selectingone or more of the standard hardware control modules to be included inthe device based on performance characteristics required by the controlpanel and control software; wherein selecting one or more of thestandard hardware control modules comprises having the computerautomatically select the one or more of the standard hardware controlmodules based on performance characteristics required by the controlpanel and the control software.
 49. The method of claim 48, furthercomprising storing software representations of pre-existing controlpanel components on a computer, wherein using the computer to developthe control panel and the control software comprises selecting andplacing software representations of pre-existing control panelcomponents on a software representation of the control panel.
 50. Themethod of claim 49, further comprising storing software representationsof pre-existing control processes on the computer, wherein using thecomputer to develop the control panel and the control software for thedevice comprises: selecting and placing pre-existing representations ofcontrol panel components; selecting one or more pre-existing controlprocesses; associating each of the selected control operations with aselected control panel component; and generating the control software bymanipulating the software representations of the control panelcomponents and the software representations of the one or morepre-existing control processes.
 51. The method of claim 48, furthercomprising: connecting one or more of the standard hardware controlmodules to active components of the device; downloading the controlsoftware from the computer to the connected standard hardware controlmodules; and testing the device using the control software running onthe connected standard hardware control modules under control of thecomputer.
 52. The method of claim 51, further comprising: generating avirtual control panel at the computer, the virtual control panelembodying the control panel designed for the device; permitting a userto manipulate the virtual control panel to generate virtual controlinputs; and transmitting the virtual control inputs to the connectedstandard hardware control modules to control the device.
 53. The methodof claim 52, wherein transmitting the virtual control inputs comprisestransmitting the virtual control inputs over a pair of wires using acommunications protocol.
 54. A system for designing a control system fora device, the system comprising: a computer having an input unit, anoutput unit, a processor, a storage device, and a display; softwarerepresentations of pre-existing control panel components stored on thestorage device; and control hardware connectable to active components ofthe device and operable to receive data from the output unit of thecomputer; wherein the processor is programmed to: present arepresentation of a control panel on the display, permit a user todevelop the control panel and control software for the device by usingthe input device to select and place representations of pre-existingcontrol panel components on the displayed representation of the controlpanel, download the control software from the computer to the controlhardware through the output unit; test the device using the controlsoftware running on the control hardware and under the control of thecomputer through the output unit; display a virtual control panel on thedisplay, the virtual control panel embodying the control paneldesignated for the device; permit the user to use the input unit tomanipulate the virtual control panel to generate virtual control inputs;and transmit the virtual control inputs to the control hardware throughthe output unit to control.
 55. The system of claim 54, wherein theoutput unit comprises a pair of wires connected to the control hardwareand transmitting the virtual control inputs comprises transmitting thevirtual control inputs over the pair of wires using a communicationsprotocol.
 56. The system of claim 54, wherein the control hardwarecomprises a standard hardware control module for implementing thecontrol software and having a communications interface, the standardhardware control module being connected to active components of thedevice, and being connected to the computer through the communicationsinterface.
 57. The system of claim 54, further comprising softwarerepresentations of standard control operations stored on the storagedevice, wherein: the processor is programmed to permit the user to:select and place multiple ones of the standard representations ofcontrol panel components; select one or more standard controloperations; and associate each of the selected control operations with aselected standard representation of a control panel component; and theprocessor is programmed to generate the control software by manipulatingthe software representations of the control panel components and thesoftware representations of the one or more standard control operations.58. The system of claim 54, wherein the device comprises an appliance.59. The system of claim 58, wherein the appliance comprises a clotheswasher.
 60. The system of claim 54, further comprising acomputer-controlled modelling system connected to the computer andoperable to generate a three-dimensional model of the control panel. 61.The system of claim 54, wherein the control hardware comprises standardcontrol software.
 62. The system of claim 61, wherein downloading thecontrol software from the computer to the control hardware comprisesadding one or more modules to the standard control software.
 63. Thesystem of claim 61, wherein downloading the control software from thecomputer to the control hardware comprises replacing one or more modulesof the standard control software.
 64. The system of claim 54, whereinthe processor is further programmed to automatically generate a designspecification from the control panel.